<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    const arr = [1,11,222]

    // 1. 迭代器对象
    let ite = arr[Symbol.iterator]()
    // console.log(ite.next()); // 迭代器对象里有一个next方法 可以取出来数组里的每一个项
    // console.log(ite.next());
    // console.log(ite.next());
    // console.log(ite.next()); // 到第四项取不到了 就是undefined

    // 只要是迭代器对象都可以用for...of方法 去遍历
    for (let i of arr) {
      // console.log(i); // 取到每一个值
    }


    // 2. 迭代器的使用技巧


    // 来观察一下 arr.entries()
    // console.log(arr.entries()); // Array Iterator {}    是迭代器对象
    for (let i of arr.entries()){
      // console.log(i); 
      // 拿到的是键值对  [索引,值]
      // 由上面可知 还可以分别打印arr.keys()  arr.values()  获取的都是值
    }
    // 通过上面的方法 可以快速的拿到可迭代对象的键、值、键值对
    


    // 3. Array.from方法  将一个类似于数组的结构转变为数组
    function test () {
      // arguments并不是数组 数组好用的方法并不能使用  
      // console.log(arguments);

      // 用Array.from方法改造一下
      // console.log(Array.from(arguments).map);
    }
    test(1,2,3)

    
    // 4.查询类方法
    const arr1 = [1,2,4,10]
    // console.log(arr1.indexOf(2)); // 返回来第一次出现的下标
    // console.log(arr1.find(item=> item>5)) ; // 返回第一个满足条件的值
    // console.log(arr1.findIndex(item => item = 1)); // 返回第一个满足条件的索引
    // 除此之外还有对应的findLast findLastIndex 都是反向查询


    // 5 小试牛刀 分别是三个人的成绩 都遍历出来
    const arr2 = [
      [98,97,95],
      [100,20,30],
      [78,99,44]
    ]

    for( let i =0 ; i< arr2.length; i++){
      console.log(`是第${i+1}个人的成绩`);
      for(let j = 0 ; j< arr2[i].length ; j++){
        console.log(arr2[i][j]);
      }
    }



    

  </script>
</body>
</html>